switch
是 C 提供的另一種條件判斷的方式(python 沒有的 !),本身只能比較數字或字元。但如果使用適當的話,或許比 if
更有效率。
switch
的語法會長這樣:
switch(expression)
{
case constant1:
statements1;
break;
case constant2:
statements2;
...
default:
default statements;
}
一開始,會先看看 switch
括號中的 expression,得到 expression 的數值(或字元)後,會一一與 case
設定的數字(或字元)比較,如果符合,就會執行以下的 statement,直到遇到 break
後才會離開 switch
的區塊。如果都沒有符合的數值(或字元),就會執行 default
裡的 statements。default
是可以省略的!
或許這樣講解還有點籠統,我們用程式碼來講一次!
#include<stdio.h>
int main(){
float a, b;
char c;
printf("輸入兩個數字 運算方法>>");
scanf("%f %f %c", &a, &b, &c);
switch(c){
case '+':
printf("a+b=%.2f", a + b);
break;
case '-':
printf("a-b=%.2f", a - b);
break;
case '*':
printf("a*b=%.2f", a * b);
break;
case '/':
printf("a/b=%.2f", a / b);
break;
default:
printf("輸入錯誤");
}
return 0;
}
輸出結果:
這個程式,是輸入兩個數字,並可以決定對這兩個數字做甚麼運算。
首先,我們會輸入兩個數字以及一個運算方式(+
、-
、*
、/
),運算方式是一個字元,被存在變數 c 中。
然後,我們再用 switch
判斷 c 是甚麼字元,並做出相對應的運算,如果不是四則運算的字元,我們輸出"輸入錯誤"來提醒使用者。switch
裡面的 break
值得我們拿出來討論一下~
break
在 C 語言中 break
有兩種用法:
break
,迴圈立刻終止。(迴圈的部分以後會再說明)switch
語句switch
程式的 case
中沒有了 break
會怎麼樣呢?break
刪掉後:#include<stdio.h>
int main(){
float a, b;
char c;
printf("輸入兩個數字 運算方法>>");
scanf("%f %f %c", &a, &b, &c);
switch(c){
case '+':
printf("a+b=%.2f", a + b);
case '-':
printf("a-b=%.2f", a - b);
case '*':
printf("a*b=%.2f", a * b);
case '/':
printf("a/b=%.2f", a / b);
default:
printf("輸入錯誤");
}
return 0;
}
輸出結果:
今天講完了 switch,明天要開始進入迴圈單元了~